package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 币理财项目实体类，用于存储币理财项目的详细信息。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "financial_item")
public class FinancialItem {

    /**
     * 项目ID，自增长主键。
     */
    @ApiModelProperty(value = "项目ID", example = "1")
    private Long id;

    /**
     * 项目标识符，唯一标识一个币理财项目。
     */
    @ApiModelProperty(value = "项目标识符", example = "FI123456")
    private String itemId;

    /**
     * 项目名称，币理财项目的名称。
     */
    @ApiModelProperty(value = "项目名称", example = "高收益定期理财")
    private String itemName;

    /**
     * 项目描述，币理财项目的详细描述。
     */
    @ApiModelProperty(value = "项目描述", example = "这是一款高收益的定期理财产品，投资期限为一年，预期年化收益率为8%。")
    private String itemDesc;

    /**
     * 预期收益率，币理财项目的预期年化收益率。
     */
    @ApiModelProperty(value = "预期收益率", example = "0.08")
    private Double yield;

    /**
     * 投资期限，币理财项目的投资期限，以天为单位。
     */
    @ApiModelProperty(value = "投资期限", example = "365")
    private int deadline;

    /**
     * 最小投资金额，币理财项目的最小投资金额。
     */
    @ApiModelProperty(value = "最小投资金额", example = "1000.00")
    private BigDecimal coinMinnum;

    /**
     * 投资币种，币理财项目接受的投资币种。
     */
    @ApiModelProperty(value = "投资币种", example = "BTC")
    private String coinName;

    /**
     * 创建时间，币理财项目创建的时间。
     */
    @ApiModelProperty(value = "创建时间", example = "2023-03-01 12:00:00")
    private LocalDateTime createTime;

    /**
     * 更新时间，币理财项目最后更新的时间。
     */
    @ApiModelProperty(value = "更新时间", example = "2023-03-01 12:00:00")
    private LocalDateTime updateTime;

    /**
     * 项目状态，币理财项目的当前状态。
     */
    @ApiModelProperty(value = "项目状态", example = "1")
    private int itemState;
}
